package drg_group.suzhou_2023.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.suzhou_2023.Base;
import drg_group.suzhou_2023.MedicalRecord;
import drg_group.suzhou_2023.ADRG.*;

public class MDCE{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"J15.700","J12.800","R06.400","I89.800x016","J21.900x002","C45.701","A16.015","D17.400x002","A19.001","A15.104","J98.602","A15.500x029","J70.001","A16.301","Q33.003","R93.804","J15.900","R06.000x003","J67.400","C34.101","Q85.904","A37.900x003","R04.800x002","B38.000","D17.400x005","B48.501+J17.2*","A19.000x011","J15.600x006","J86.000","J98.506","J94.200","A15.201","J15.600x005","J62.800x002","J94.802","C77.100","J18.200","J20.700","J45.800","A19.000x017","C79.800x829","C38.300","A15.300x001","J84.109","J84.802","A15.500x022","A15.500x027","J86.014","Q85.900x015","D17.700x023","U04.900","B39.100","A15.202","A15.801","C79.807","I26.900x007","J98.201","J98.410","A15.812","J63.800x010","B37.101+J17.2*","J86.018","A15.500x024","J98.800x001","R06.300","A15.500x016","R91.x04","J93.800x001","A15.105","S27.110","J86.013","J92.900x002","B06.801+J17.1*","J63.800x017","A15.500x003","Q34.900","A15.106","A16.011","B40.200","Q85.901","E32.800x005","S27.812","A15.809","I89.800x021","J95.810","S27.301","J18.800x012","J68.000x002","J15.600x003","A15.603","S27.808","A15.901","B65.907+I52.1*","J95.802","U07.100x003","B40.100","B49.x14+J99.8*","M31.302+J99.1*","A21.201+J17.0*","J45.004","A15.500x021","J98.000x013","A16.026","J63.201","J39.802","D86.000","R84.500","J40.x01","D38.201","J98.400x012","A15.005","J42.x00x001","J98.400x005","A15.814","J47.x00","R09.000","J45.003","J63.800x026","J82.x00x001","J46.x01","U07.000","A16.201","A15.000x001","J15.901","D38.400x001","J44.900x002","R06.200","A16.006","D36.700x008","J10.100x005","A15.204","J45.901","J63.300x003","J94.800x003","A16.021","A15.205","A16.807","J94.807","D02.400","D18.100x015","J63.800x014","D38.300x001","J45.002","A16.501","A15.702","J96.900x003","J63.100","A15.408","B49.x13","A16.401","M31.304+J99.1*","S27.803","J68.400","T86.803","A19.000x005","C78.001","E83.104+J99.8*","B33.400x001+J17.1*","A16.012","C45.000","J98.800x003","R09.800x092","C38.200","J96.900x002","A16.025","S27.200","A19.000x018","J44.000","S27.610","J67.200x002","J63.800x022","C49.302","J44.800x001","Q33.500","A19.000x019","C78.000x003","A19.000x012","J46.x02","J43.900","J68.800","A15.100x008","J98.601","J63.800x019","A19.802","J63.800x011","S27.100","B77.801+J17.3*","I97.800x018","J63.800x001","A16.700x002","J98.009","J98.400x013","D38.103","A15.100x001","A16.204","A15.000x024","A37.901+J17.0*","J16.800x001","T17.803","A16.107","S27.910","J13.x00","A16.018","E32.900","J95.300","A16.104","J43.100","T17.400","A15.500x001","J62.800x005","J84.100x006","J92.000","J98.800x004","T27.300","J98.401","J86.001","A15.206","C34.800x003","S24.200","A16.019","J84.104","R09.101","J21.900","I26.900x009","A16.803","J18.900","J10.000","J80.x00","J84.101","J98.010","R06.803","J67.300","J45.006","J95.800x010","A16.101","A15.500x015","S27.303","C79.800x809","J62.000x001","A15.000x014","A16.031","A15.001","C34.800x001","C76.100x003","A16.200x014","I26.900x008","J62.000x002","J98.001","S27.500","A15.000x003","J44.806","I89.000x028","A16.023","J98.418","J39.810","M33.103+J99.1*","C49.300x001","A15.000x016","J84.801","S27.900","A15.607","A16.500x001","J98.507","A16.205","J84.100x007","B37.800x083","Q32.102","J15.300","C76.100","A15.402","J84.110","A15.304","J63.800x005","S27.302","I26.902","B38.100","J43.000","J94.900x001","A16.900x001","A16.900x002","A15.500x011","A15.900","B37.100","I26.900x017","A15.200x001","J85.200","J94.804","T17.802","A37.900x004","M35.002+J99.1*","B66.401+J99.8*","C78.201","B58.300+J17.3*","A06.501+J99.8*","A16.802","S27.210","J63.803","J40.x00x002","A37.900","J98.503","Q32.401","D48.710","A16.103","I88.107","S27.600","J61.x01","Q89.800x910","J46.x00x009","J62.800x003","S27.000","J98.006","B65.902+J99.8*","C46.701","D18.011","I89.804","J90.x00x004","J95.401","J98.004","T17.804","A15.806","T86.800x011","C34.900x008","J86.016","J60.x00","J98.600x001","I26.901","J45.900x002","J63.000x003","R06.802","J41.000","A16.207","A15.100x011","J69.000x002","J63.800x013","J68.101","B05.200+J17.1*","A15.807","B44.101+J99.8*","C77.102","J15.101","A16.037","J98.404","J18.001","S29.800","R09.800x093","J84.100x008","E85.407","J95.100","C78.304","A16.016","J20.600","J46.x00x003","C34.100x003","J68.900","C38.800","A37.100","A16.029","R09.801","R09.100","J20.500","J43.902","C34.901","J64.x00","J98.413","D36.717","A16.005","R84.400","J95.800x021","J18.100","J94.805","J94.201","J98.400x016","A15.504","J10.001","S27.311","S27.510","J11.000x001","J98.005","R06.801","J63.800x024","A15.502","J66.800","A16.108","D48.700x019","Q33.400","C34.000","A15.000x002","J45.900x023","J86.006","J63.301","M32.103+J99.1*","J15.100","J63.800x012","D38.100x001","D38.100x002","J39.806","S27.400","J86.903","J63.800x025","A15.500x002","A16.400x010","J61.x00x002","A16.805","D48.115","J82.x00x005","J98.501","J18.902","J45.000x001","D38.101","J82.x00x004","A15.507","A19.000","R04.200","R06.600","J12.200","J96.100","A19.000x006","D17.400x004","S27.806","J85.002","J84.800x004","C34.102","A16.109","A16.206","C37.x00","J47.x03","A36.201","Q32.402","B49.x00x011","C78.003","A19.000x016","C38.401","D38.104","B37.803","J84.102","A16.801","R06.805","A16.900x003","B39.200","S28.100","S29.700","A15.506","B38.100x001+J17.2*","A16.002","R84.300","A15.500x026","E85.412+J99.8*","J69.101","J93.100x002","J98.416","A16.305","R84.000","R91.x03","A16.505","J86.902","E89.802","J67.000","J70.200x002","A16.022","J67.800x005","A16.900x023","D38.102","J15.601","A16.007","J84.800x006","J20.901","C78.200","J86.009","B40.000","J98.800x007","A16.001","A15.804","J42.x00x003","M33.001+J99.1*","J98.008","J98.408","T17.900","J67.800x003","C34.300x004","A15.107","A16.503","J12.900","J98.403","J98.000x012","A15.703","Q85.908","J15.000","J15.800x002","J66.100","J69.000","M05.101+J99.0*","Q79.101","J63.800x016","J98.100","A16.003","T17.901","R04.802","J47.x01","A15.500x004","A16.804","S27.300x012","J18.002","J63.000x002","A15.601","I26.900x018","J81.x00x002","A02.201+J17.0*","R05.x00","R06.301","D15.900","J98.800x014","J98.007","C34.900x004","I89.000x016","J66.000","J93.003","Q32.400x004","T17.500","A15.404","A15.100x005","A15.609","J94.101","J61.x00x003","D14.400","J15.200","J90.x00","J69.001","J98.500x001","J98.500x007","A16.406","A15.000x026","A16.024","E32.800x001","A15.000x012","A19.000x004","J45.900x001","J45.900","J46.x00x002","J60.x00x002","J96.000","M05.102+J99.0*","Q33.900","J67.800x001","A15.608","A19.000x013","J63.800x023","C77.101","J44.807","C38.400","J20.300","A15.101","D36.706","A16.105","J42.x00x006","R94.204","B41.000","I26.900x011","J44.900x005","A15.004","J68.001","J84.000x003","A19.000x015","J98.101","Q33.301","M31.300x002","R09.100x002","D38.200x001","J44.100","J95.800x004","J65.x00","J86.000x012","A15.403","J70.900","A15.103","A15.405","B38.200x001+J17.2*","D18.000x800","C77.104","A15.500x017","I89.800x017","D38.105","J60.x00x005","Q34.100","A16.000x002","J09.x00","C34.801","J62.800x006","J67.700x002","J98.405","A15.500x013","J44.900x003","J63.800x003","J84.108","J84.805","R06.100","J39.808","A15.000x010","E32.802","A19.000x007","J98.102","A19.000x010","Q32.300","S27.802","J98.409","J62.804","S27.310","J18.802","J98.414","J45.900x031","C34.201","I89.807","J63.800x018","J95.811","J98.411","C34.300x003","A16.303","J68.002","J67.200","R09.200","J86.002","C34.000x003","Q32.200","J10.000x001","Q79.000","J95.800x012","E32.801","J42.x00x004","A15.100x006","I89.800x018","C77.103","T17.801","J21.100","J46.x00x008","J90.x00x003","B67.100x001+J99.8*","A16.032","J98.800x018","A15.401","C34.301","A15.100x010","I89.800x002","A15.500x028","J18.800x004","A15.400x001","J22.x00","J44.900x004","J98.412","A16.203","Q34.000","A15.701","A19.803","J67.100","B45.000x002+J99.8*","A16.014","C77.105","J95.801","A16.200x013","B39.100x001+J17.2*","J44.900","S25.401","R91.x01","J47.x02","I26.900x005","T27.700","A15.100x007","A43.000x001+J99.8*","J98.801","A15.003","J98.800x016","J63.000x001","Q33.600","J45.000x003","Q33.800x001","J44.805","J41.100","J67.900","J62.001","A16.102","J84.800x007","A16.700x001","D17.400x003","M33.201+J99.1*","E85.400x005","J63.500","J18.000","Q33.000","J20.100","J95.900","J98.000x011","B06.800","A16.300x002","B45.000","J67.200x003","J18.800x006","J67.800x004","B38.200","R06.000","J45.007","J63.400","J98.802","J45.900x012","T84.200x004","A15.509","B39.000","C39.900x001","J18.000x002","J18.000x001","J98.504","S27.313","A15.800x001","A15.500x019","S27.710","A15.200x002","J46.x00x006","J86.008","J98.700","C34.802","T85.700x804","J96.900x001","D21.302","E84.001","J86.005","J86.020","M05.100+J99.0*","D48.709","J86.017","J90.x01","J43.101","A16.500x010","D02.100","J45.903","Q79.103","J81.x00","J42.x01","A15.000x022","A15.406","C39.800","J18.800x001","A16.013","A15.606","C38.400x003","E32.100","J18.801","A16.035","C78.306","J45.900x021","J86.000x006","J40.x00","J62.801","J39.803","S27.807","T27.600x001","J16.000","B48.500+J17.2*","J86.007","J98.200","I89.800x023","J43.903","J98.407","J70.800","J67.500","J98.500x008","C33.x00","C45.702","D17.700x019","J94.800x010","B48.502+J17.2*","A15.407","D14.302","A16.403","A16.200x002","B01.200+J17.1*","I89.000x027","U07.100x002","A54.806+J17.0*","J85.000x002","J68.000x001","J85.001","J82.x00x002","J90.x02","I89.003","A16.806","A16.034","M05.103+J99.0*","D38.300x003","Q32.400x002","J14.x00","J41.800","J68.201","J39.801","C79.810","E32.800x004","B39.000x001+J17.2*","J62.800x004","R09.800x094","J42.x00","J84.105","A06.502+J17.3*","D14.300x001","J94.801","J15.500","C34.900x006","S27.801","D15.000","J63.300x001","J98.502","A16.009","A22.102+J17.0*","J11.100x005","J60.x00x003","R05.x01","A15.500x010","A15.811","A15.602","D17.400x001","J43.800x001","J98.000x009","D02.200x002","J68.301","J45.100","A15.002","J15.902","J20.902","J63.800x021","A16.800x002","J94.901","I26.900x012","A15.508","J44.802","B46.000x001+J99.8*","A15.813","R09.800x095","J61.x00x001","A16.033","Q33.002","A16.400x005","I89.800x007","A15.000x028","J84.800x003","J63.800","A16.304","I89.000x029","J86.019","J62.800x007","A19.000x001","J62.802","J15.800x001","C49.300x003","J98.400x001","R84.800","S27.401","A01.000x005+J17.0*","J95.808","A06.500+J99.8*","M34.800x001+J99.1*","A19.000x020","J63.200","J86.000x013","A16.200x007","B25.000+J17.1*","C38.100","A15.307","J45.900x013","R84.700","A15.100x003","C34.001","R94.202","A16.030","C78.100","J45.100x003","J98.417","S28.000","A15.604","S27.312","J84.803","A19.801","A37.800x001","D15.700","J98.901","R04.900","J95.200","J93.100x001","A16.200x015","B42.000+J99.8*","C45.700","E85.404","J15.000x002","J44.801","J45.100x002","J69.000x004","Q79.102","A15.605","J44.803","R09.300","R84.600","S27.700","J21.901","J20.000","A15.505","J69.800x001","J84.800x008","J15.903","A16.302","D38.300x002","J84.001","J18.803","R84.100","A15.802","S29.900","J94.806","U07.100x001","A16.000x001","J67.800x002","J86.015","J84.002","J60.x00x004","J18.800x002","A16.036","E32.001","J63.801","J63.802","J67.700x001","T79.800x007","T81.400x009","R06.804","R91.x00x001","I26.900x015","J69.100x001","J92.901","D86.200","R84.200","J60.x01","J20.800","J63.001","D15.200","S27.810","J09.x01","J98.415","J15.600x002","A15.805","J20.900","J93.900","C77.100x004","T17.501","A16.504","I26.900x013","J98.800x009","J70.400","I26.900x016","I88.900x008","J15.400","A19.000x002","J98.300","Q89.209","C34.800","A15.303","C78.002","Z03.800x001","A16.106","A16.500x008","G47.300x034","J80.x01","J84.800x005","A15.207","C79.800x838","E32.002","J95.800x009","J15.602","J98.002","A15.000x020","D38.100x003","J39.805","R09.201","D18.000x857","J43.904","J86.901","J21.000","C34.900x005","J21.801","A19.000x003","R93.801","A15.007","A15.810","A15.409","D18.100x026","J84.103","A15.100x004","J86.010","A16.017","J98.800x006","C34.800x002","A15.305","J18.903","J12.300","D15.200x002","J20.400","J86.012","J90.x00x002","M34.801+J99.1*","A16.027","E32.000","Q33.100","A19.000x014","J43.901","I26.900x003","R06.806","R06.000x002","J45.000","R09.800x091","A16.008","A16.010","J46.x00x010","A16.020","J67.600","J39.807","A15.500x020","C34.000x002","A15.203","C78.000","J15.402","A16.500x009","J12.100","J63.800x020","R94.201","J45.900x011","J45.902","J98.400x008","I26.900x002","A16.300x007","J43.900x001","J63.000","I26.900x001","A19.000x008","J70.200","J86.003","J95.800x016","J98.402","A15.500x014","A15.803","D14.301","J62.803","D38.600x001","I88.106","C34.803","D15.701","I00.x00x007+J17.8*","Q33.800x002","D02.201","J43.001","D38.401","J84.804","B44.102+J17.2*","D38.601","J63.800x015","R94.200","A15.500x025","D36.700x013","J62.800x008","R91.x00x005","M35.904+J99.1*","A16.402","S27.811","A16.038","J70.101","A15.102","A15.808","E32.000x003","J90.x00x005","J95.804","A15.000x018","J70.300","I26.900x006","R06.800x005","A16.028","J18.901","A16.500x004","A16.405","J62.000x003","J82.x01","J39.804","Q32.400x005","C34.100x004","R84.904","S27.804","J12.000","J20.200","J85.100","C34.900x001","J98.508","C34.902","R84.903","T27.500x001","A15.100x009","J43.000x003","B38.000x001+J17.2*","D38.301","J86.011","J42.x00x005","A15.501","A16.800x003","B44.000x001+J99.8*","R05.x02","A16.210","S27.800x013","A15.306","A16.300x003","R59.009","A15.301","A16.100x001","A37.000","D18.000x814","J85.300","J45.900x041","Q33.200","S27.010","T27.200x001","T85.608","J98.011","A16.004","R04.800x004","S27.410","D18.100x025","A19.000x009","A15.302","J63.300x002","R93.805","J09.x02","A16.202","J98.400x019","J94.800x004","S27.805","A52.704+J99.8*","J45.005","B39.200x001+J17.2*","D19.000","A06.500x002+J99.8*","A15.503","A15.500x023","D14.200","J63.800x009","D15.200x001","I26.900x010","A15.500x012","A16.400x011","J67.600x001","S27.501","A16.200x012","I28.800x010","J66.200","A15.100x002","J67.400x002","J98.505","A15.500x018","A15.006","M33.901+J99.1*","J86.004","J43.200","J98.003","J84.900"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCE入组条件，匹配规则：主诊断匹配");
        String result;

        result=EB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EB2.group(record);
        if (result.length()>0){
            return result;
        }

        result=EC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EC2.group(record);
        if (result.length()>0){
            return result;
        }

        result=ED1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EJ1.group(record);
        if (result.length()>0){
            return result;
        }

        if (record.ssList!=null && record.ssList.length>0 && Base.contains(Base.SS_VALID,record.ssList[0])){
            Base.groupMessages.putMessage(record.Index,"符合EQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "EQY";
        }

        result=ER1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ER2.group(record);
        if (result.length()>0){
            return result;
        }

        result=ER3.group(record);
        if (result.length()>0){
            return result;
        }

        result=ES1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ES2.group(record);
        if (result.length()>0){
            return result;
        }

        result=ES3.group(record);
        if (result.length()>0){
            return result;
        }

        result=ET1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ET2.group(record);
        if (result.length()>0){
            return result;
        }

        result=EU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EV1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EW1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EX1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EX2.group(record);
        if (result.length()>0){
            return result;
        }

        result=EZ1.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCE的ADRG入组条件");
        return "";
    }
}

